package zgrjb.snbq.teach_platform.dto.model;

import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.*;

import java.time.LocalDateTime;

/**
 * 文件资源表 DO
 * 对应数据库表：file
 * 
 * CREATE TABLE `file` (
 *     `id` BIGINT UNSIGNED NOT NULL PRIMARY KEY COMMENT '文件ID',
 *     `name` VARCHAR(128) NOT NULL COMMENT '文件名称',
 *     `url` VARCHAR(512) NOT NULL COMMENT '文件URL',
 *     `type` VARCHAR(64) DEFAULT NULL COMMENT '文件类型：video,document,image,audio',
 *     `description` VARCHAR(256) DEFAULT NULL COMMENT '文件描述',
 *     `class_id` BIGINT UNSIGNED NOT NULL COMMENT '关联班级ID',
 *     `course_id` BIGINT UNSIGNED DEFAULT NULL COMMENT '关联课程ID',
 *     `uploader_id` BIGINT UNSIGNED NOT NULL COMMENT '上传者ID',
 *     `uploader_type` VARCHAR(32) COMMENT '上传者类型：teacher,student',
 *     `file_size` BIGINT DEFAULT 0 COMMENT '文件大小（字节）',
 *     `download_count` INT DEFAULT 0 COMMENT '下载次数',
 *     `del` INT DEFAULT 0 COMMENT '删除标记：0-正常，1-删除',
 *     `publish` INT DEFAULT 0 COMMENT '发布状态：0-草稿，1-发布',
 *     `is_public` TINYINT DEFAULT 1 COMMENT '是否公开：1-公开，0-私有',
 *     `status` TINYINT DEFAULT 1 COMMENT '状态：1-正常，0-停用',
 *     `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
 *     `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
 * );
 */

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@TableName("file")
public class FileDO {

    /**
     * 文件ID
     */
    private Long id;

    /**
     * 文件名称
     */
    private String name;

    /**
     * 文件URL
     */
    private String url;

    /**
     * 文件类型：video,document,image,audio
     */
    private String type;

    /**
     * 文件描述
     */
    private String description;

    /**
     * 关联班级ID
     */
    @TableField("class_id")
    private Long classId;

    /**
     * 关联课程ID
     */
    @TableField("course_id")
    private Long courseId;

    /**
     * 上传者ID
     */
    @TableField("uploader_id")
    private Long uploaderId;

    /**
     * 上传者类型：teacher,student
     */
    @TableField("uploader_type")
    private String uploaderType;

    /**
     * 文件大小（字节）
     */
    @TableField("file_size")
    private Long fileSize;

    /**
     * 下载次数
     */
    @TableField("download_count")
    private Integer downloadCount;

    /**
     * 删除标记：0-正常，1-删除
     */
    private Integer del;

    /**
     * 发布状态：0-草稿，1-发布
     */
    private Integer publish;

    /**
     * 是否公开：1-公开，0-私有
     */
    @TableField("is_public")
    private Integer isPublic;

    /**
     * 状态：1-正常，0-停用
     */
    private Integer status;

    /**
     * 创建时间
     */
    @TableField("create_time")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField("update_time")
    private LocalDateTime updateTime;
}
